package com.wangdong.mijiqiqi.activity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;

import com.wangdong.mijiqiqi.MainActivity;
import com.wangdong.mijiqiqi.R;

/**
 *  讲一下Activity的跳转
 *
 *          下面测试跳转没有跳转的到实际的页面中所以不用运行的事代码
 *          我只是把代码记录一下,如果想现实运行测试
 *          从新写一下
 *
 *          应用场景
 *          显示意图:启动统一个应用中的Activity
 *          隐式意图:启动不同应用中的Activity
 *          再启动效率上,隐式远远低于显示
 * */
public class ShanpActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shanp);
        Log.i("xixi", Thread.currentThread().getName());
        //获取到携带过来的数据
        Intent intent = getIntent();
        Uri uri = intent.getData();
        if (uri!=null){
            System.out.println(uri.toString());
        }
        /** 取数据时候可以
         *     1.Intent intent = getIntent(); //多个数据intent直接取出
         *     2.Bundle bundle = intent.getExtras();//多个数据封装到bundle中
         *     3.Uri uri = intent.getData();//单个数据
         *
         * */
    }

    /**
     *  隐式:跳转至打电话activity*/
    public void onclick1(View view) {
//        Toast.makeText(this,"dianjile",Toast.LENGTH_LONG).show();

       /* 需要权限 CALL_PHONE.6.0需要动态权限
       //需要告诉系统意图
        Intent intent = new Intent();
        //需要给意图设置动作
        intent.setAction(Intent.ACTION_CALL);//打电话
        //需要一个电话号码
        intent.setData(Uri.parse("tel:18518637379"));
        //跳转
        startActivity(intent);*/

       /*第二种跳转到拨号界面,用户手动点击拨打,不需要权限
        Intent intent = new Intent(Intent.ACTION_DIAL);
        Uri data = Uri.parse("tel:" + "18518637379");
        intent.setData(data);
        startActivity(intent);*/

    }
    /**
     *  显示跳转 : 指定Activity的包名和类名
     * */
    public void onclick2(View view) {
        /**1.第一种:指定class类名字节码*/
        Intent intent = new Intent();
        intent.setClass(this, MainActivity.class);
        startActivity(intent);
        /**2.第二种:指定包名和类名*/
        Intent intent1 = new Intent();
        intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
        //如果是手机上有两个以上的浏览器这个就没的选择了因为这是写实的只能用指定的浏览器了
        startActivity(intent);


    }
    /**
     *  隐式跳转 : 指定Action 和data 跳转
     *      如果:被隐式跳转Activity是我们自己写的是需要添加 意图过滤器
     *      <Activity android:name = ".MainActivity"
     *      android:permission =""//可以自定义权限添加>
     *          <Intent-filter> 意图过滤器
     *              <action android:name= "com.itheima.sa"></action>//自己定义动作
     *              <category android:name = "android.intent.caterory.DEFAULT"/>//读:'kan te ge rui' 意思:附加物 使用最常见就DEFAULT默认
     *              //说明一下:例子:<category android:name = "android.intent.category.APP_MAPS"></category>//这是意思:指明这个隐式意图使用做地图的
     *              //                                      android.intent.category.APP_BROWSER 这是浏览器的
     *          </Intent-filter>
     *          </Activity>
     * */
    public void onclick3(View view) {
        //Intent intent = new Intent(Intent.ACTION_CALL); 参数:指定是系统Activity动作
        Intent intent = new Intent("com.itheima.sa");//我们自己定义的动作:也就是自己定义动作字符串
        //也可以这样写:intent.setAction("com.itheima.sa");
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        //如果被启动Activity添加是默认category ,在启动是时候可以不写,系统会添加一个默认category,如果不是默认的那就必须匹配的category
        //注明一下:
        startActivity(intent);
    }

    /**
     * 隐式跳转 携带数据
     *      被隐式跳转的Activity在清单文件中意图过滤器需要
     *      <Activit android:name = ".MainActivtiy">
     *          <Intent-filter>
     *              <action android:name = "com.ithema.sa"/>
     *
     *                   <data android:scheme = "heima" android:mimeType="text/username"/>  携带数据  Uri. parse("heima:"+"添加携带的数据")) , mimeType是携带数据类型
     *                 //data 中 scheme 和mimeType 可以一起设置也可以单独 设置一个
     *                  <category android:name = "android.intent.category.DEFAULT"
     *          </Intent-filter>
     *
     *         可以添加多个 意图过滤器 只要和一个意图过滤器匹配就可以器启动这个Activiity
     *         <Intent-filter>
     *              <action android:name = "com.ithema.sdwd"/>
     *
     *                   <data android:scheme = "heima2"/> 携带数据
     *
     *                  <action android:name = "android.intent.category.DEFAULT"
     *          </Intent-filter>
     *
     *          可以有多个action 和多个data 如果隐式启动只需要和其中一个匹配就可以启动
     *          <Intent-filter>
     *              <action android:name= "com.ithema.hah"></action>
     *              <action android:neme= "com.ithema.wangdong"></action>
     *              <data android:scheme="heima"/>
     *              <data android:scheme="heihei"/>
     *              <category android:name="android.Intent.category.DEFAUlT"
     *              <cation android:name
     *          </Intent-filter>
     *
     *
     *          </Activit>
     *
     *  一一匹配才能隐式启动
     * */
    public void onClik4(View view) {
        Intent intent = new Intent();
        intent.setAction("com.itheima.sa");
        intent.addCategory(Intent.CATEGORY_DEFAULT);
       intent.setData(Uri. parse("heima:"+"添加携带的数据"));//"heima:"必须写 后面是自己要携带的数据
        startActivity(intent);


        Intent intent1 = new Intent();
        intent1.setAction("com.itheima.sdwd");
        intent1.addCategory(Intent.CATEGORY_DEFAULT);
       intent1.setData(Uri. parse("heima2:"+"添加携带的数据"));//"heima:"必须写 后面是自己要携带的数据
        startActivity(intent);

       // 一一匹配才能隐式启动
          Intent intent2 = new Intent();
        intent2.setAction("com.itheima.sdwd");
        intent2.addCategory(Intent.CATEGORY_DEFAULT);
        //同时设置data数据和Type是不行的会报错 所以下面两个同时出现时错的
//       intent2.setData(Uri. parse("heima:"+"添加携带的数据"));//"heima:"必须写 后面是自己要携带的数据
//        intent2.setType("text/usernaem");
        //应给这样写
        intent2.setDataAndType(Uri.parse("heima:"+"携带的数据"),"text/username");
        startActivity(intent);

    }

    /**
     *  那被隐式启动Activity怎么获取携带过来的数据那
     *  是需要在onCreate中
     *                  Intent intent = getIntent();//获取到启动这个activity的携带数据意图
     *                  Uri uri = Intent.getData();
     *
     * */
}
